嗨!
上一期我們說了Unity Debug.Log的一些特性還有他和print的不同。
今天我們要繼續講Unity的Debug系統有什麼好料的可以來挖。
我們繼續上次的內容。
我們上次介紹了Debug.Log可以分成很多種來做出等級區分。
除了方便快速分類,其實還能用來設定中斷點。
我們更改上次的程式碼:
public void SequentialChangeGameState()
{
switch (currentState)
{
case GameState.MainMenu:
currentState = GameState.SelectGameMode;
// Handle logic for the main menu state
break;
case GameState.SelectGameMode:
currentState = GameState.Playing;
// Handle logic for the selecting game mode state
Debug.LogWarning("This is a basic warning message");
// here
break;
case GameState.Playing:
currentState = GameState.GameOver;
// Handle logic for the playing state
Debug.LogError("This is a basic error message");
// and here
break;
case GameState.GameOver:
currentState = GameState.MainMenu;
// Handle logic for the game over state
break;
// Add more cases as needed
}
GameStateChanged = true;
}
我們將警告Debug.LogWarning以及錯誤訊息Debug.LogError,
搬到續向遊戲模式切換程式SequentialChangeGameState()內。
然後在Unity編輯器內點按Console,Error Pause。
第一次進入,將會是遊戲選單,不暫停。
第一次點擊按鈕。遊戲選單狀態改為SelectGameMode。
一般的Log被輸出了。
這是我們在Update()中撰寫用來顯示當前狀態的。
第二次點擊按鈕。遊戲選單狀態改為Playing。
Debug.LogWarning("This is a basic warning message");
會被觸發。所以除了顯示當前遊戲選單狀態為Playing,還會顯示LogWarning。
第三次點擊按鈕。遊戲選單狀態改為GameOver。
此時,遊戲會被暫停,因為錯誤發生了。
像這種中斷方式,可以在Log中仔細說明是哪種錯誤。
因為是小錯所以是警告,或因為是某種大錯所以暫停程式,並詳細說明錯誤原因。
對,如果我只是想停下來,一、步、一、步、看,這樣呢?
那我們可以用Debug.Break。
Debug.Break();
就是這樣。
所以我們試試看在GameOver狀態加上這段。
然後運行。
可以看到他一跑到GameOver狀態自己停止了。
「好欸!」
最後,還有一種可以不用手動刻出條件,內建接受布林值的函式。
Debug.Assert(GameModeChanged, "The Game Mode has been changed");
這樣就不用弄一堆巢狀結構來打破程式碼的結構性啦!